package com.example.stuwork.service;

import com.example.stuwork.common.Result;
import com.example.stuwork.pojo.Quiz;

import java.util.List;
import java.util.Map;

/**
 * 随堂测试服务接口
 */
public interface QuizService {
    
    /**
     * 获取测试列表
     *
     * @return 测试列表的结果
     */
    Result<List<Quiz>> getQuizList();
    
    /**
     * 根据ID获取测试信息
     *
     * @param quizId 测试ID
     * @return 测试信息的结果
     */
    Result<Quiz> getQuizById(Long quizId);
    
    /**
     * 根据课程ID和班级ID获取测试列表
     *
     * @param courseId 课程ID
     * @param classId 班级ID
     * @return 测试列表的结果
     */
    Result<List<Quiz>> getQuizByCourseAndClass(String courseId, Long classId);
    
    /**
     * 根据教师ID获取测试列表
     *
     * @param teacherId 教师ID
     * @return 测试列表的结果
     */
    Result<List<Quiz>> getQuizByTeacher(String teacherId);
    
    /**
     * 创建测试
     *
     * @param quiz 测试信息
     * @param questions 题目列表的JSON字符串
     * @return 创建结果
     */
    Result<?> createQuiz(Quiz quiz, String questions);
    
    /**
     * 更新测试信息
     *
     * @param quiz 测试信息
     * @return 更新结果
     */
    Result<?> updateQuiz(Quiz quiz);
    
    /**
     * 删除测试
     *
     * @param quizId 测试ID
     * @return 删除结果
     */
    Result<?> deleteQuiz(Long quizId);
    
    /**
     * 获取测试详情
     *
     * @param quizId 测试ID
     * @return 测试详情的结果
     */
    Result<Map<String, Object>> getQuizDetail(Long quizId);
    
    /**
     * 开始测试
     *
     * @param quizId 测试ID
     * @return 开始测试的结果
     */
    Result<?> startQuiz(Long quizId);
    
    /**
     * 结束测试
     *
     * @param quizId 测试ID
     * @return 结束测试的结果
     */
    Result<?> endQuiz(Long quizId);
    
    /**
     * 获取学生可参与的测试列表
     *
     * @param courseId 课程ID
     * @param classId 班级ID
     * @param studentId 学生ID
     * @return 测试列表的结果
     */
    Result<List<Map<String, Object>>> getStudentQuizList(String courseId, Long classId, String studentId);
} 